package com.wsh.crawler.constant;

/**
 * 业务状态码枚举
 */
public enum BusinessStatus {
    /**
     * 响应码规范概述：
     * 0：成功 999999：未知错误
     * 服务 模块 说明
     * 10   00  通用-服务异常相关错误（如：100000->请求失败，100001->远程调用失败，）
     * 10   01  通用-请求非法相关错误（如：100100->参数错误，100101->缺少参数，100102->接口不存在，...）
     * 10   02  通用-认证授权相关错误（如：100200->非法token，100201->token失效，100202->没有权限，...）
     * 11   00  用户-身份认证相关错误（如：110000->用户未登录，110001->密码错误，...）
     * 11   01  用户-用户信息相关错误（如：110100->用户不存在，110101->密码修改失败，110102头像修改失败，...）
     * 11   02  用户-用户地址相关错误
     * 11   *   用户-*
     * 12   00  商城-首页相关错误（如：120000->菜单数据错误，...）
     * 12   01  商城-商品相关错误（如：120100->该商品不存在或已下架，...）
     * 12   02  商城-订单相关错误（如：120200->未查询到该订单，...）
     * 12   *   商城-*
     * 13   00  视频-短视频相关错误
     * 13   01  视频-直播相关错误
     * 13   02  视频-
     * */

    // 成功与未知错误
    SUCCESS(0, "成功"),
    UNKNOWN_ERROR(999999, "未知错误"),

    // 通用-服务异常相关错误
    FAIL(100000, "失败"),
    REMOTE_CALL_FAILED(100001, "远程调用失败"),
    INSERT_FAILED(100002, "新增业务失败"),
    UPDATE_FAILED(100003, "更新业务失败"),
    DELETE_FAILED(100004, "删除业务失败"),
    DATA_PARSING_EXCEPTION(100005, "数据解析异常"),
    MQ_ERROR(100006, "MQ异常"),
    TYPE_ERROR(100007, "业务类型错误"),
    DELETE_RELEVANCE(100008, "无法删除有关联的数据"),
    LOCK_FAILED(100009, "抢锁失败"),
    LOCK_ERROR(100010, "抢锁异常"),
    COMMON_NOT_FOUND(100011, "未查询到相关数据"),


    // 通用-请求非法相关错误
    PARAM_ERROR(100100, "参数错误"),
    MISSING_PARAM(100101, "缺少参数"),
    INTERFACE_NOT_FOUND(100102, "接口不存在"),
    ILLEGAL_OPERATION(100103, "非法操作"),
    SQL_INTEGRITY_CONSTRAINT_VIOLATION_EXCEPTION(100104, "违法SQL唯一约束"),
    VALID_ERROR(100105, "参数验证错误"),
    HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION(100106, "请求方法错误"),
    DUPLICATE_KEY_ERROR(100107, "数据库重复值"),
    DB_CONFIG_ERROR(100108, "数据库配置错误"),
    ILLEGAL_REQUEST(100109, "非法请求"),
    ANTI_ROBOT_CODE_ERROR(100110, "防机器人验证码错误"),
    SEND_COUNT_LIMIT(100111, "发送验证码次数过多"),
    COMMON_MUTEX_ERROR(100112, "通用轻量级操作互斥错误"),


    // 通用-认证授权相关错误
    INVALID_TOKEN(100200, "非法token"),
    TOKEN_EXPIRED(100201, "token失效"),
    NO_PERMISSION(100202, "没有权限"),
    INVALID_TIME(100203, "无效时间戳"),
    SIGN_ERROR(100204, "签名错误"),
    INVALID_CLIENT_TOKEN(100205, "无效的客户令牌"),
    CLIENT_TOKEN_ERROR(100206, "客户令牌错误"),
    UUID_ERROR(100207, "设备ID错误"),
    IP_BLACKLISTED(100208, "IP被封禁"),

    // 通用-支付相关
    PAY_FAIL(100300, "统一支付错误"),
    PAY_PROCESSING(100301, "支付处理中"),
    PAY_CANCELLED(100302, "已取消支付"),

    // 用户-身份认证相关错误
    USER_NOT_LOGGED_IN(110000, "用户未登录"),
    USERNAME_PASSWORD_INCORRECT(110001, "用户名或密码错误"),
    VERIFICATION_CODE_ERROR(110002, "验证码错误"),
    REGISTER_FAIL(110003, "注册失败"),
    NO_PASSWORD_SET(110004, "未设置密码"),
    PASSWORD_ERROR(110005, "密码错误"),
    USER_STATUS_EXCEPTION(110006, "用户状态异常"),
    LOGIN_TYPE_ERROR(110007, "登录类型错误"),
    IDENTITY_AUTH_FAIL(110008, "身份认证失败"),
    IDENTITY_AUTH_AUDITING(110009, "身份认证正在审核中"),
    IDENTITY_AUTH_NORMAL(110010, "已经存在实名认证信息"),
    IDENTITY_AUTH_NOT_FOUND(110011, "请先进行实名认证"),
    PASSWORD_ERROR_COUNT_LIMIT(110013, "密码错误次数过多"),
    IP_USER_REGISTER_LIMIT(110014, "IP地址注册用户数已达到上限"),
    DEVICE_USER_REGISTER_LIMIT(110015, "设备注册用户数已达到上限"),
    ADMIN_STATUS_DISABLE(110016, "管理员已被禁用"),
    SMS_CODE_ERROR_COUNT_LIMIT(110017, "短信验证码错误次数过多"),
    EMAIL_CODE_ERROR_COUNT_LIMIT(110018, "邮箱验证码错误次数过多"),
    ADMIN_SMS_CODE_ERROR_COUNT_LIMIT(110019, "后台短信验证码错误次数过多"),
    AGENT_SMS_CODE_ERROR_COUNT_LIMIT(110020, "后台短信验证码错误次数过多"),
    SHORT_VIDEO_PERMISSION_DISABLED(110021, "短视频功能已被禁用"),
    INTERACTION_PERMISSION_DISABLED(110022, "互动功能已被禁用"),


    // 用户-用户信息相关错误
    USER_NOT_FOUND(110100, "用户不存在"),
    PASSWORD_CHANGE_FAILED(110101, "密码修改失败"),
    AVATAR_CHANGE_FAILED(110102, "头像修改失败"),
    NO_PERMISSION_CHANGE_PASSWORD(110103, "没有权限修改该用户密码"),
    PASSWORD_CHECK_FAILURE(110104, "密码校验失败"),
    POINT_NOT_ENOUGH(110105, "积分不足"),
    USER_EXTERNAL_NOT_FOUND(110106, "用户第三方配置不存在"),
    QUERY_USER_NO_PERMISSION(110107, "无权限查看用户"),
    QUERY_SYSTEM_USER_NO_PERMISSION(110108, "无法查看系统用户"),

    // 用户-用户地址相关错误
    ADDRESS_NOT_FOUND(110200, "用户地址未找到"),
    ADDRESS_CREATION_FAILED(110201, "用户地址创建失败"),

    // 用户-用户钱包相关错误
    NOT_SUFFICIENT_FUNDS(110300, "余额不足"),
    UPDATE_WALLET_ERROR(110301, "余额更新失败（可能是乐观锁约束）"),
    WITHDRAW_STATUS_ERROR(110302, "提现状态错误"),

    // 用户-黑名单列表
    USER_BLOCK_NO_PERMISSION(110400, "没有拉黑权限"),
    USER_BLOCKED(110401, "已被拉黑"),

    // 用户-专家
    EXPERT_NOT_FOUND(110500, "未认证专家"),
    EXPERT_PLAN_DAY_TIME_MAX_LIMIT(110501, "每日发布方案次数超限"),
    LOTTERY_MATCH_NOT_FOUND(110502, "体彩比赛不存在"),
    ODDS_NOT_FOUND(110503, "指数不存在"),
    EXPERT_PLAN_NOT_FOUND(110504, "专家方案不存在"),
    EXPERT_PLAN_STOP_SELL(110505, "专家方案已停售"),

    // 用户-赛事
    MATCH_NOT_FOUND(110600, "比赛不存在"),

    // 用户-第三方信息
    USER_WECHAT_NOT_FOUND(110700, "未查询到该用户微信信息"),

    // 用户-用户设置相关错误
    USER_SETTING_NOT_FOUND(110800, "用户设置未找到"),
    USER_NOT_ALLOWED_TO_BE_VIEWED(110801, "用户禁止查看"),

    // 商城-首页相关错误
    MENU_DATA_ERROR(120000, "菜单数据错误"),

    // 商城-商品相关错误
    PRODUCT_NOT_FOUND(120100, "该商品不存在或已下架"),

    // 商城-订单相关错误
    ORDER_NOT_FOUND(120200, "未查询到该订单"),
    UNABLE_EVALUATE(120201, "暂无法评价"),
    EVALUATION_DELETED(120202, "该评价已被删除"),
    NOT_SHIPPED_YET(120203, "订单未发货"),
    ORDER_STATUS_ERROR(120204, "订单状态不合法"),//如本次操作要求未付款的订单，但该笔订单已经付款
    REFUND_NOT_FOUND(120205, "退款申请不存在"),
    REFUND_STATUS_ERROR(120206, "退款申请不合法"),

    // 商城-优惠券相关错误
    COUPON_NOT_FOUND(120300, "未查询到该优惠券"),
    COUPON_BEEN_COLLECTED(120301, "优惠券已经领完"),
    COUPON_NOT_COLLECTION_TIME(120302, "优惠券未到领取时间"),
    COUPON_BEEN_CLAIMED(120303, "已领取过该优惠券"),
    COUPON_NOT_AVAILABLE(120304, "优惠券不可用"),

    // 商城-库存相关错误
    STOCK_NOT_ENOUGH(120400, "库存不足"),


    // 视频-视频相关错误
    VIDEO_NOT_FOUND(130000, "视频不存在"),
    VIDEO_UPLOAD_FAILED(130001, "视频上传失败"),
    VIDEO_OP_NO_PERMISSION(130002, "没有权限操作视频"),

    // 视频-评论、点赞、收藏
    VIDEO_COMMENT_NOT_FOUND(131001, "视频评论不存在"),

    // 视频-合集
    VIDEO_ALBUM_NOT_FOUND(132001, "视频合集不存在"),
    VIDEO_ALBUM_VIDEO_NOT_FOUND(132002, "视频合集内不存在该视频"),

    // 直播-基本错误
    LIVE_STREAM_NOT_FOUND(140000, "直播不存在"),
    LIVE_STREAM_ERROR(140001, "直播错误"),
    LIVE_CATEGORY_NOT_FOUND(140002, "直播分类不存在"),
    LIVE_NO_PERMISSIONS(140003, "没有直播权限"),
    LIVE_NO_OP_PERMISSIONS(140004, "当前直播间角色没有操作权限"),

    // 直播-观众错误
    AUDIENCE_NOT_FOUND(140100, "观众不在直播间内"),
    AUDIENCE_STATUS_ERROR(140101, "观众状态不合法"),

    // 直播-礼物错误
    LIVE_GIFT_NOT_FOUND(140200, "礼物配置不存在"),
    LIVE_GIFT_PRICE_ERROR(140201, "礼物价值不合法"),

    // 消息-基本错误 150000
    IM_REQUEST_FAIL(150001, "请求IM接口失败"),

    // 消息-群组错误 150100
    TEAM_NOT_FOUND(150100, "群组不存在"),

    TEAM_OP_NO_PERMISSION(150101, "没有操作群的权限"),

    // 消息-群成员错误 150200
    TEAM_MEMBER_NOT_FOUND(150200, "群成员不在该群中"),

    // 资讯-基础错误
    NEWS_NOT_FOUND(160000, "资讯未找到"),

    NEWS_COMMENT_NOT_FOUND(160100, "资讯评论不存在"),

    NEWS_TAG_NOT_FOUND(160200, "资讯标签不存在"),

    // 活动-基础错误
    ACTIVITY_NOT_FOUND(170000, "活动不存在");

    private final int code;
    private final String description;

    BusinessStatus(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    @Override
    public String toString() {
        return "BusinessStatus{" +
                "code=" + code +
                ", description='" + description + '\'' +
                '}';
    }
}

